package com.bestcem.xm.award.controller.param.draw;

import com.bestcem.xm.award.enums.AwardIssueStatusEnum;
import com.bestcem.xm.award.enums.AwardLevelEnum;
import com.bestcem.xm.common.core.constant.RegTypes;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.*;

/**
 * 获取中奖名单中的奖项信息 接收参数
 *
 * @author ympan <yuming.pan@idiaoyan.com>
 * @version v3.0
 * @date 2021/8/19 14:55
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ListWinnerDetailsReceiveParam {
    /**
     * 奖励id
     */
    @NotBlank(message = "奖励id不能为空")
    @Pattern(regexp = RegTypes.OBJECT_ID, message = "奖励id格式错误")
    @JsonProperty("id")
    private String awardId;

    /**
     * 公司id
     */
    @NotBlank(message = "公司id不能为空")
    @Pattern(regexp = RegTypes.OBJECT_ID, message = "公司id格式错误")
    @JsonProperty("org_id")
    private String orgId;

    /**
     * 中奖记录id
     */
    @Pattern(regexp = "(^\\s*)|([a-fA-F0-9]{24})", message = "抽奖记录id格式错误")
    @JsonProperty("record_id")
    private String recordId;

    /**
     * 投放id
     */
    @Pattern(regexp = "(^\\s*)|([a-fA-F0-9]{24})", message = "投放id格式错误")
    @JsonProperty("deliver_id")
    private String deliverId;

    /**
     * 奖项等级 {@link AwardLevelEnum}
     */
    @NotNull(message = "奖项等级不能为空")
    @Min(value = 0, message = "奖项等级错误")
    @Max(value = 100, message = "奖项等级错误")
    private Integer level;

    /**
     * 奖项名称
     */
    private String name;

    /**
     * 中奖状态 {@link AwardIssueStatusEnum}
     */
    @NotNull(message = "中奖状态不能为空")
    @Min(value = 0, message = "中奖状态错误")
    @Max(value = 100, message = "中奖状态错误")
    private Integer status;

    /**
     * 页号
     */
    @NotNull(message = "页号不能为空")
    @Min(value = 0, message = "页号不能小于0")
    private Integer page;

    /**
     * 分页大小
     */
    @NotNull(message = "每页大小不能为空")
    @Min(value = 0, message = "每页大小不能小于0")
    @Max(value = 1000, message = "每页大小不能大于1000")
    private Integer size;
}
    